Comme j’avais marre de voir les pages d’erreur par défaut d’Apache, j’ai décidé de changer tout ça.
J’ai donc fait une page toute simple, plus colorée et sympathique, en PHP, pour chacune des erreurs les plus communes. Par exemple, pour 404 :
<?php header('HTTP/1.1 404 Not Found'); $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)]; ?> <style> body{ background-color:<?php echo $color;?>; font-family:monospace; text-align:center; } div{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); background-color:black; color:white; margin:auto; padding:6em; width:fit-content; } </style> <body> <div> <h1>There is nothing here!</h1> <p>But if you are wondering, the background color is <?php echo $color; ?>.</p> </div> </body>
Un truc tout simple, donc. On me diras « ça répond pas au standards du web, il n’y a même pas de balise <html> ni <head>, et c’est n’importe quoi !! », mais on s’en fout, cette page sert juste à afficher un message d’erreur, et les navigateurs sont toujours capable de l’afficher correctement. De plus, la page envoyée fait moins de 600 octets, le document est parsé et affiché en moins de 100ms.
Ensuite, pour utiliser ces fichiers, il faut configurer ça dans Apache, bien sûr. On pourrait très bien ajouter quelques lignes dans apache2.conf, mais c’est plus propre de créer un fichier dans conf-available/.
Dans conf-available donc, je créé le fichier error-color.conf qui contient ceci :
Alias /errors/ /var/www/html/ ErrorDocument 400 /errors/400.php ErrorDocument 401 /errors/401.php ErrorDocument 403 /errors/403.php ErrorDocument 404 /errors/404.php ErrorDocument 408 /errors/408.php ErrorDocument 418 /errors/418.php ErrorDocument 500 /errors/500.php ErrorDocument 503 /errors/503.php
Et pour finir, on applique les changements :
sudo a2enconf error-color sudo service apache2 reload
Comme ça, ça fait une page d’erreur plus sympas, qui est toujours rééditable par le .htacess du site.